#include "SymboleValue.h"
#include <stdlib.h>

#include "Color.h"

////////////////////////////////////////////////////////////////////////////////
SymboleValue::SymboleValue(Symbole s) :
	Symbole(s.getChaine()) {
	if (s == "<ENTIER>") {
		valeur = atoi(s.getChaine().c_str()); // c_str convertit une string en char*
		defini = true;
	} else {
		valeur = 0;
		defini = false;
	}
}

////////////////////////////////////////////////////////////////////////////////
void SymboleValue::afficher(unsigned short indentation) {
	Noeud::afficher(indentation);
	cout << "Feuille - Symbole value : " << getChaine() << endl; // on affiche la chaine du symbole
}

////////////////////////////////////////////////////////////////////////////////
void SymboleValue::traduire(unsigned short indentation) {
  Color color;
	Noeud::traduire();
	cout << color.textcolor(BRIGHT, MAGENTA, BLACK) <<  getChaine() << color.textcolor(BRIGHT, WHITE, BLACK);
}

////////////////////////////////////////////////////////////////////////////////
// Attention : cette fonction (operator) n'est pas membre de la classe SymboleValue
ostream & operator <<(ostream & cout, SymboleValue symb) {
	cout << (Symbole) symb << "\t\t - Valeur=";
	if (symb.defini)
		cout << symb.valeur << " ";
	else
		cout << "indefinie ";
	return cout;
}
